package com.mzy.olddate.demo.arrayandklist;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author Ives
 * * @date 2021/8/16
 */
public class arrayChangeList {

  public static void main(String[] args) {
    String items[] = {"1", "2", "3", "4", "5"};
    for (String item :
            items) {
      System.out.println(item);
    }
    // 将定长数组转换成list
    List<String> strings = Arrays.asList(items);

    /**
     * strings.remove(1);直接调用add/ remove会报错
     * 发生问题的原因如下：
     * 调用Arrays.asList()生产的List的add、remove方法时报异常，这是由Arrays.asList()
     * 返回的是Arrays的内部类ArrayList， 而不是java.util.ArrayList。
     * Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList，
     * remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
     * java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新，所以会抛出异常
     * 解决方法如下：
     */

    ArrayList<String> list = new ArrayList<String>(strings);
    list.add("5");
    list.add("5");
    list.add("7");
//    list.remove(4);
//    list.remove(1);
//    for (String item:
//         list) {
//      System.out.println("删除前"+item);
//      if (item.equals("3")){
//        list.remove("3");
//      }
//      System.out.println("删除后"+item);
//    }
//    System.out.println(list);


    Iterator<String> it=list.iterator();
    while(it.hasNext()){
      if("5".equals(it.next())){
        it.remove();
      }
    }
    list.add("8");

    System.out.println(list);
    String join = String.join(",", list);
    System.out.println(join);

    String s = new String();
    System.out.println("11"+s);

    /**
     * 使用场景，数据库里需要存储String对象数组的时候，可能要用到
     * 后面去了解一下list数组结构的扩容机制
     */

  }
}
